docs: reorganize markdown files into proper structure - #4
Merged
Conversation
Problem 1: Objects couldn't be dropped everywhere during drag - Root cause: ARCore hit test only updates position on valid plane surfaces - Fix: Keep last valid position when hit test fails, object stays in place - Added lastValidDragPosition to track successful drag positions Problem 2: Trash zone deletion not working reliably - Root cause: onDragUpdate only called when currentObj found in placedObjects - Fix: Always call onDragUpdate even if object not found (use default position) - Added final trash zone check in onDragEnd to ensure deletion works Fixes: fix-drag-drop-position, fix-trash-zone-delete Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added isOverTrashZone() helper function that checks both X (right side) and Y (bottom) coordinates - Fixed trash zone hit detection to properly detect when object is dragged to bottom-right corner - Updated onDragMove and onDragEnd to use the new isOverTrashZone() function - Constants: TRASH_ZONE_SIZE_DP=80, TRASH_ZONE_MARGIN_DP=16 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Fixed magic strings in TrashZone (now uses localized strings) - Removed unused 'progress' variable - Added release_to_delete and drag_to_delete strings (EN and TR) - Improved drag movement with camera ray projection fallback - Objects can now be moved to areas without detected planes - Uses camera's view matrix to project movement Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Root cause: Camera ray projection fallback was using absolute screen coordinates instead of delta movement, causing erratic object positioning. Solution: - Track last screen position (dragLastScreenX/Y) for delta calculation - Use screen delta movement instead of absolute normalized coordinates - Project finger movement to world XZ plane using camera vectors - Apply delta to current position instead of recalculating from scratch - Scale pixel-to-world conversion based on object distance from camera Also includes style improvements to TrashZone: - Add semi-transparent background - Add subtle shadow effect - Add subtle border - Center text properly - Increase size for better text fit Fixes: drag-everywhere-bug Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add semi-transparent background (alpha 0.7 normal, 0.85 hovered) - Add subtle shadow effect for better visibility - Add subtle border for definition - Center text with TextAlign.Center and fillMaxWidth - Increase size to 100x90dp for better text fit - Add fillMaxSize to Column for proper centering Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Root cause: isOverTrashZone() was using incorrect dimensions (80dp x 80dp) that didn't match the actual TrashZone component (100dp x 90dp). Solution: Updated trash zone detection to use the correct dimensions: - trashZoneWidth = 100.dp (matches component's width) - trashZoneHeight = 90.dp (matches component's height) - trashZonePadding = 16.dp The detection area now correctly matches the visual trash zone position, enabling reliable drag-to-delete functionality. Fixes: trash-zone-delete-bug Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added ObjectThumbnail composable for displaying 3D object previews - Updated ObjectListItem in ARScreen with thumbnail support - Updated ObjectListItem in ObjectListScreen with thumbnail support - Uses placeholder icon (ViewInAr) based on model type - Thumbnails display in styled boxes with rounded corners - Selected state shows highlighted background Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added Koin dependencies (koin-core, koin-android, koin-compose) - Created DI modules: dataModule, applicationModule, presentationModule - Created platform-specific modules for Android and iOS data sources - Updated MainActivity to initialize Koin - Updated App.kt to use koinInject() for ViewModels - Simplified dependency wiring through DI container Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added CapturedPhoto model in domain layer - Created MediaRepository interface - Implemented CapturePhotoUseCase - Added Android MediaRepositoryImpl with MediaStore API - Added capture button to AR screen (camera icon) - Implemented PixelCopy-based AR view capture - Integrated with Koin DI - Added iOS placeholder implementation Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add CapturedVideo domain model to CapturedMedia.kt - Extend MediaRepository interface with video recording methods - Create RecordVideoUseCase for recording state management - Update Android MediaRepositoryImpl with video recording support - Add RecordingState sealed class to ARViewModel - Add startRecording/stopRecording/toggleRecording functions - Update ARScreen with VideoRecordButton and RecordingIndicator - Add iOS MediaRepositoryIOSImpl stub implementation - Update DI modules with RecordVideoUseCase - Fix GalleryViewModel coroutine scope issue - Fix iOS MainViewController to use Koin injection Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added ObjectGalleryScreen with grid layout (2-column LazyVerticalGrid) - Created ObjectGalleryCard component with visual previews - Implemented model type badges (GLB/GLTF/USDZ/OBJ) - Added search/filter functionality for objects - Added empty state with import CTA - Added no-results state for search - Updated App.kt navigation with Screen.ObjectGallery - Added i18n strings (EN/TR) for gallery Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Added Kover plugin for test coverage reporting - Configured HTML and XML report generation - Added exclusion filters for generated code - Reports generated at build/reports/kover/ Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add VideoRecorder class for ARSceneView video capture using MediaRecorder - Add camera-style controls: CameraStyleRecordButton, RecordingTimerDisplay - Add CameraControlsBar with photo, record, and gallery buttons - Add RecordingBorderGlow effect during recording - Add recording duration timer in ARViewModel - Update ARScreen with new camera-style controls layout - Connect VideoRecorder to MediaRepository via callbacks Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
UI Changes: - Move selected object indicator from bottom to top-left - Redesign camera controls bar with clean centered layout - Add semi-transparent background to camera controls - Fix overlapping elements in AR screen Video Recording Fix: - Connect VideoRecorder directly to MediaRepository via Koin - Register recording callbacks when ARSceneView is ready - Clear callbacks properly on dispose Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Add ModelPreviewThumbnail expect/actual for cross-platform support - Android: SceneView-based 3D rendering with auto-rotation - iOS: Placeholder icon fallback - Integrate into ObjectGalleryScreen - Handle loading states and errors gracefully Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Remove environmentLoader to avoid missing HDR file crash - Simplify Scene setup to use default environment - Improve error handling in model loading Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
3D SceneView preview causing stability issues. Temporarily disabled until resolved. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Rewrite VideoRecorder with MediaCodec + MediaMuxer approach - Add thread safety with CountDownLatch synchronization - Register GalleryViewModel in Koin AppModule - Add gallery use case registrations (GetPhotos, GetVideos, DeletePhoto, DeleteVideo) - Fix GalleryScreen callbacks in App.kt navigation - Add MediaItem import for gallery functionality - Fix capturePhoto → requestCapture method call Video recording now properly: - Handles cross-thread calls from IO dispatcher - Uses InputSurface from MediaCodec instead of Canvas drawing - Caps resolution at 1920x1080 with aspect ratio preservation - Uses 8 Mbps bitrate for efficient encoding Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Root cause: startKoin was called unconditionally in onCreate, causing KoinApplicationAlreadyStartedException when Activity recreates (e.g., on configuration change, back navigation). Solution: Check GlobalContext.getOrNull() before initializing Koin to skip initialization if already started. Fixes: KAN-1 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
ARViewModel was not receiving CapturePhotoUseCase due to positional parameter injection. Changed to named parameter injection to ensure proper dependency resolution. Fixes: KAN-4 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Replace SpaceEvenly layout with weighted sections - Use Box with weight(1f) for left and right sections - Center record button uses fixed size (80dp) without weight - Gallery button aligned to end of left section - Photo capture button aligned to start of right section - Remove unused placeholder boxes - Clean up unused imports Fixes: KAN-7 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Root cause: GalleryViewModel was being eagerly injected at App() composition time, causing loadMedia() to run immediately even before user navigates to Gallery screen. This triggered premature MediaRepository access. Solution: Move GalleryViewModel injection inside the Screen.Gallery when branch, so it only initializes when user actually navigates to the Gallery screen. Fixes: KAN-6 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Delete 5 redundant/temporary files (INDEX.md root, documentation-organization-complete.md, documentation-cleanup-report.md, project-restructuring-report.md, design/app-icon/INDEX.md) - Move 18 misplaced files to correct subdirectories (docs/bugs/, docs/guides/, docs/ios/, docs/reports/, docs/design/) - Normalize all uppercase filenames to kebab-case (e.g. DEPLOYMENT_GUIDE.md → guides/deployment-guide.md) - Move .github/workflows/ MD files to docs/ (IOS_WORKFLOW_README, QUICK_REFERENCE, IMPLEMENTATION_SUMMARY) - Fix .claude/agents/README.md: add missing Bug Fixer agent (6 → 7 agents) - Update docs/INDEX.md and docs/README.md to reflect new structure - Update .claude/WORKFLOW_EXAMPLES.md: fix moved IOS_WORKFLOW_README path Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Keep HEAD (docs/md-reorganization) versions for all conflicts: - strings.xml: keep gallery strings (object_gallery, search_objects, etc.) - ARScreen.kt: keep asymmetric TrashZone, animated selected indicator - ARView.kt: keep delta-based drag movement implementation Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
INDEX.md, 3 temp status reports, duplicatedesign/app-icon/INDEX.md)docs/.github/workflows/MD files todocs/(they don't belong in the workflows directory).claude/agents/README.md: Bug Fixer agent was missing (6 → 7 agents listed)docs/INDEX.mdanddocs/README.mdto reflect new structureFiles moved
TEST_SUMMARY.mddocs/reports/test-summary.mddocs/DRAG_DROP_DESIGN.mddocs/design/drag-drop-design.mddocs/IOS_ISSUES_ANALYSIS.mddocs/ios/ios-issues-analysis.mddocs/BUG-001-*.mddocs/bugs/docs/ANDROID_*.mddocs/reports/docs/ARCORE_*.md,docs/DEPLOYMENT_GUIDE.mddocs/guides/.github/workflows/*.md(3 files)docs/guides/anddocs/ios/Test plan
docs/INDEX.mdpoint to existing files.claude/agents/README.mdlists 7 agents correctly🤖 Generated with Claude Code